{
self->is_mutable = TRUE;
- g_clear_pointer (&self->surface, cairo_surface_destroy);
- g_clear_pointer (&self->texture, gsk_texture_unref);
+ self->node_class->finalize (self);
+
g_clear_pointer (&self->name, g_free);
while (self->first_child)
/*** GSK_TEXTURE_NODE ***/
+static void
+gsk_texture_node_finalize (GskRenderNode *node)
+{
+ gsk_texture_unref (node->texture);
+}
+
static const GskRenderNodeClass GSK_TEXTURE_NODE_CLASS = {
GSK_TEXTURE_NODE,
- "GskTextureNode"
+ "GskTextureNode",
+ gsk_texture_node_finalize
};
GskTexture *
/*** GSK_CAIRO_NODE ***/
+static void
+gsk_cairo_node_finalize (GskRenderNode *node)
+{
+ if (node->surface)
+ cairo_surface_destroy (node->surface);
+}
+
static const GskRenderNodeClass GSK_CAIRO_NODE_CLASS = {
GSK_CAIRO_NODE,
- "GskCairoNode"
+ "GskCairoNode",
+ gsk_cairo_node_finalize
};
/*< private >
/**** GSK_CONTAINER_NODE ***/
+static void
+gsk_container_node_finalize (GskRenderNode *node)
+{
+}
+
static const GskRenderNodeClass GSK_CONTAINER_NODE_CLASS = {
GSK_CONTAINER_NODE,
- "GskContainerNode"
+ "GskContainerNode",
+ gsk_container_node_finalize
};
/**